package co.gov.medellin.ssti.sub.model.service.impl;

import java.util.Collection;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import co.gov.medellin.ssti.sub.model.dao.SisbenDAO;
import co.gov.medellin.ssti.sub.model.dao.exception.DAOException;
import co.gov.medellin.ssti.sub.model.service.SisbenService;
import co.gov.medellin.ssti.sub.model.vo.BeneficiarioSisbenVO;

@Component
public class SisbenServiceImpl implements SisbenService {
	@Autowired
	SisbenDAO sisbenDAOImpl;

	@Override
	public Collection<BeneficiarioSisbenVO> findBeneficiarioByCriteria(
			BeneficiarioSisbenVO beneficiarioCriteriaVo) {
		boolean sinCriteria = true;
		if (beneficiarioCriteriaVo != null) {
			if (beneficiarioCriteriaVo.getPrimerNombre() != null
					&& !beneficiarioCriteriaVo.getPrimerNombre().isEmpty()) {
				sinCriteria = false;
			} else if (beneficiarioCriteriaVo.getPrimerApellido() != null
					&& !beneficiarioCriteriaVo.getPrimerApellido().isEmpty()) {
				sinCriteria = false;
			} else if (beneficiarioCriteriaVo.getSegundoNombre() != null
					&& !beneficiarioCriteriaVo.getSegundoApellido().isEmpty()) {
				sinCriteria = false;
			} else if (beneficiarioCriteriaVo.getSegundoApellido() != null
					&& !beneficiarioCriteriaVo.getSegundoApellido().isEmpty()) {
				sinCriteria = false;
			} else if (beneficiarioCriteriaVo.getNumeroDocumento() != null
					&& !beneficiarioCriteriaVo.getNumeroDocumento().isEmpty()) {
				sinCriteria = false;
			} else if (beneficiarioCriteriaVo.getTipoDocumento() != null
					&& !beneficiarioCriteriaVo.getTipoDocumento().isEmpty()) {
				sinCriteria = false;
			} else if (beneficiarioCriteriaVo.getFechaNacimiento() != null
					&& !beneficiarioCriteriaVo.getFechaNacimiento().isEmpty()) {
				sinCriteria = false;
			}
		}
		if (sinCriteria) {
			throw new DAOException("Debe ingresar al menos un criterio.");
		}
		try {
			Collection<BeneficiarioSisbenVO> benList = null;
			benList = sisbenDAOImpl
					.findBeneficiarioByCriteria(beneficiarioCriteriaVo);
			return benList;
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	@Override
	public Collection<BeneficiarioSisbenVO> findGrupoFamiliar(
			String tipoDocumento, String numeroDocumento) {
		try {
			return sisbenDAOImpl.findGrupoFamiliar(tipoDocumento,
					numeroDocumento);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

}
